var dataType = "PM";
var dataCategory = "all";
var Pointlayer;
var overlayToolp;
var map;
//缓存数据容器
PMCache = new Array();
SOURCHCache = new Array();

var data = {
	//创建地图
	createMap:function(){
		//创建地图
		map = new ol.Map({
			// 设置地图图层
			layers: [
				new ol.layer.Tile({
					source:new ol.source.XYZ({
						//url:'https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',
						// url:'https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}',
						// url:'https://wprd04.is.autonavi.com/appmaptile?lang=en&size=1&style=7&x={x}&y={y}&z={z}',
						url:'https://webrd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&size=1&scale=1&style=8&lang=en',
						wrapX:false
					}),
					projection:'EPSG:4326'
				})
			],
			// 设置显示地图的视图
			view: new ol.View({
				center: [60, 20],    // 定义地图显示中心于经度0度，纬度0度处
				zoom: 3,// 并且定义地图显示层级为5
				maxZoom: 17,  //地图的最大放大级别
				minZoom:1,   //地图的自小放大级别
				// 指定投影使用EPSG:4326
				projection: 'EPSG:4326' ,
			}),
			// 让id为map的div作为地图的容器
			target: 'map',
			//
			loadTilesWhileAnimating: true,
		});
	},
	//添加标签
	addLable:function(lon,lat,obj){
		var feature = new ol.Feature({
			// 经纬度转换成坐标信息
			geometry: new ol.geom.Point([lon,lat]),
			properties:obj
		})

		feature.setStyle(
			new ol.style.Style({
				// 标点的图片，如果要标不同类型的点，这个图片可以判断加
				image: new ol.style.Icon({
					//anchor: [0, 0],
					//anchorXUnits: 'fraction',
					//anchorYUnits: 'pixels',
					opacity: 1,
					src: "/map/images/"+obj.EleType+".png",
					scale: 0.7
				}),
				// 标点的文字
//		      text: new ol.style.Text({
//		        // 文字
//		        text: '',
//		        // 文字样式
//		        fill: new ol.style.Fill({
//		          color: 'red'
//		        }),
//		        font: '20px Calibri',
//		        // 偏移量
//		        offsetY: 20
//		      })
			})
		)
		// 将 feature 坐标信息添加在地图上
		Pointlayer.getSource().addFeature(feature);
	},
	getData:function(dataType,dataCategory){
		ui.popProcess();
		var config = {
			url:'/api/ld/'+dataType+"/"+dataCategory,
			data:{},
			callBackFunc:function(da){
				ui.shutProcess();
				if(da != null){
					//清除地图
					data.clearMap();
					//修改统计信息
					var msg = "Number of "+dataCategory+" element "+dataType+" data: "+da.length;
					$("#message").text(msg)
					for(var i = 0;i<da.length;i++){
						//这个位置显示所有样本数据
						var con = da[i];
						if(!isNaN(con.Longitude) && !isNaN(con.Latitude)){
							data.addLable(con.Longitude,con.Latitude,con)
						}
					}
				}
			},
			callBackErrorFunc:function(){}
		};
		HD.doPost(config);//提交
	},
	//清除地图元素
	clearMap:function(){
		Pointlayer.getSource().clear();//清除标点
		overlayToolp.setPosition(undefined);//清除详情标签
	},
	//根据类型查询数据
	getDataBytype:function(m){
		//修改样式
		if($(m).hasClass("pdata-menu-cur")){
			$(m).attr("class","");
			dataCategory = "all";
		}else{
			$(".pdata-menu li").attr("class","");
			$(m).attr("class","pdata-menu-cur");
			dataCategory = $(m).text();
		}
		//隐藏tips
		$("#map_tips").fadeOut(500);
		//data.getData(dataType,dataCategory);
		data.getCacheBypeCat(dataType,dataCategory);
	},
	//获取元素列表
	getAllEls:function(){
		$(".pdata-menu").empty();
		var config = {
			url:'/api/ldes/'+dataType,
			data:{},
			callBackFunc:function(da){
				if(da != null && da.length > 0){
					var types = "";
					for(var x in da){
						types += "<li onclick='data.getDataBytype(this)'>"+da[x].EleType+"</li>"
					}
					$(".pdata-menu").append(types);
				}else{
					$(".pdata-menu").append("<li onclick='data.getDataBytype(this)'>C</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>N</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>O</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Si</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>S</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Fe</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Cu</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Zn</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Sr</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Nd</li>\n" +
						"\t<li onclick='data.getDataBytype(this)'>Pb</li>");
				}
				//修该元素类型标签样式
				if(dataCategory != 'all'){
					$(".pdata-menu li").each(function(n,m){
						if(dataCategory == $(m).text()){
							$(".pdata-menu li").attr("class","");
							$(m).attr("class","pdata-menu-cur");
						}
					})
				}
			},
			callBackErrorFunc:function(){}
		};
		HD.doPost(config);
	},
	//获取全部数据进行缓存
	getCacheData:function(){
		setTimeout(function (){
			if (PMCache.length == 0){
				layer.msg('Network restricted in speed, wait for a while or change another network.',{offset:'t',time:10000})
			}
		},8000);
		var pmConfig = {
			url:'/api/ld/PM/all',
			data:{},
			callBackFunc:function(da){
				if(da != null){
					PMCache = da;
				}
			},
			callBackErrorFunc:function(){}
		};
		HD.doPost(pmConfig);//提交
		var sourceConfig = {
			url:'/api/ld/SOURCE/all',
			data:{},
			callBackFunc:function(da){
				if(da != null){
					SOURCHCache = da;
				}
			},
			callBackErrorFunc:function(){}
		};
		HD.doPost(sourceConfig);//提交
	},
	//获取缓存的数据
	getCacheBypeCat:function(dataType,dataCategory){
		ui.popProcess();
		if("PM" == dataType){
			var interval = setInterval(function(){
				if(PMCache.length > 0){
					ui.shutProcess();
					clearInterval(interval);
					data.selectByCategoryAndLabel(PMCache,dataCategory,dataType);
				}
			},500);
		}else{
			var interval = setInterval(function(){
				if(SOURCHCache.length > 0){
					ui.shutProcess();
					clearInterval(interval);
					data.selectByCategoryAndLabel(SOURCHCache,dataCategory,dataType);
				}
			},500);
		}
	},
	selectByCategoryAndLabel:function(da,cat,dataType){
		//清除地图
		data.clearMap();
		var sum = 0;
		for(var i = 0;i<da.length;i++){
			//这个位置显示所有样本数据
			var con = da[i];
			if("all" == cat){
				sum = sum + 1;
				if(!isNaN(con.Longitude) && !isNaN(con.Latitude)){
					data.addLable(con.Longitude,con.Latitude,con);
				}
			}else if(con.EleType == cat){
				sum = sum + 1;
				if(!isNaN(con.Longitude) && !isNaN(con.Latitude)){
					data.addLable(con.Longitude,con.Latitude,con);
				}
			}
		}
		//修改统计信息
		let msg = "";
		if (dataType === "SOURCE"){
			dataType = "Source";
		}
		if(cat === 'all'){
			msg = "Number of "+dataType+" data for "+cat+" elements: "+sum;
		}else{
			msg = "Number of "+dataType+" data for "+cat+" element: "+sum;
		}
		$("#message").text(msg);
	}
}
//加载时调用
data.getCacheData();
function getIntVal(v){
	if (v == '' || v == null){
		return '';
	}
	if (!isNaN(v)){
		return Math.trunc(v);
	}
	return v;
}

function getIFont(v){
	if (v.indexOf("δ") > -1){
		return v.replace("δ",`<span style="font-style:italic">δ</span>`);
	}

	if (v.indexOf("Δ") > -1){
		return v.replace("Δ",`<span style="font-style:italic">Δ</span>`);
	}
	return v;
}